package com.lx.sync.core.config;

import lombok.Data;
import lombok.Builder;

@Data
@Builder
public class RetryConfig {
    /**
     * 最大重试次数
     */
    private int maxAttempts;
    
    /**
     * 初始重试间隔（毫秒）
     */
    private long initialInterval;
    
    /**
     * 重试间隔乘数
     */
    private double multiplier;
    
    /**
     * 最大重试间隔（毫秒）
     */
    private long maxInterval;
    
    /**
     * 默认配置
     */
    public static RetryConfig defaultConfig() {
        return RetryConfig.builder()
                .maxAttempts(3)
                .initialInterval(1000)
                .multiplier(2.0)
                .maxInterval(10000)
                .build();
    }
    
    /**
     * 根据数据量动态调整配置
     */
    public static RetryConfig forDataVolume(long dataVolume) {
        if (dataVolume <= 1000) {
            return defaultConfig();
        } else if (dataVolume <= 10000) {
            return RetryConfig.builder()
                    .maxAttempts(5)
                    .initialInterval(2000)
                    .multiplier(1.5)
                    .maxInterval(15000)
                    .build();
        } else {
            return RetryConfig.builder()
                    .maxAttempts(8)
                    .initialInterval(3000)
                    .multiplier(1.2)
                    .maxInterval(20000)
                    .build();
        }
    }
} 